package Stack;

public class Test02 {
    // 例题3.2  经典递归汉诺塔问题

    public static void main(String[] args) {
        int step = hanoi(5, "a", "b", "c");
        System.out.println(step);
    }

    public static int hanoi(int plate, String a, String b, String c){
        /**
         *  plate 盘子数
         *  a, b, c  柱子名称
         *  只需要明白一个思路就是  自始至终我们移动 参数a的一个盘子到 参数c上
         */
        int step = 0;
        if(plate == 1){
            // 只有一个盘子 理所应当 把a移动到c
            //System.out.println(a +"-->"+c);
            step++;
        }else {
            // 多个盘子 需要先将n-1盘子 a 移动到 b里  在将a移动到c 最后b移动到c
            step =step + hanoi(plate-1, a, c, b);
            //System.out.println(a+"-->"+c);
            step++;
            step =step + hanoi(plate-1, b, a, c);
        }
        return step;
    }

}
